// 板块轮动模块
const BoardRotationModule = {
    // 板块轮动数据
    boardDates: [],
    boardRotationMatrix: [],
    selectedBoardName: null,

    // 处理板块轮动数据转换为矩阵格式
    processBoardRotationData(data) {
        console.log('开始处理板块轮动数据:', data);
        
        if (!Array.isArray(data)) {
            console.error('板块轮动数据格式错误: 不是数组格式');
            this.boardDates = [];
            this.boardRotationMatrix = [];
            return;
        }

        // 收集所有日期并去重排序
        const allDates = [...new Set(data.map(item => item.dateTime))].sort().reverse();
        console.log('处理后的日期:', allDates);
        this.boardDates = allDates;

        // 创建10x10的矩阵
        const rotationMatrix = [];
        
        // 为每个排名创建一行
        for (let rank = 1; rank <= 10; rank++) {
            const row = [];
            
            // 为每个日期创建一列
            for (let dateIndex = 0; dateIndex < Math.min(10, allDates.length); dateIndex++) {
                const date = allDates[dateIndex];
                
                // 查找该日期和排名的板块数据
                const boardData = data.find(item => item.dateTime === date && item.rank === rank);
                
                if (boardData) {
                    row.push({
                        date: date,
                        rank: rank,
                        bkName: boardData.bkName,
                        bkCode: boardData.bkCode,
                        ztNum: boardData.ztNum
                    });
                } else {
                    row.push(null);
                }
            }
            
            rotationMatrix.push(row);
        }

        console.log('生成的板块轮动矩阵:', rotationMatrix);
        this.boardRotationMatrix = rotationMatrix;
    },

    // 从API加载板块轮动数据
    async loadBoardRotationData() {
        try {
            const url = `/api/board/rotation`;
            console.log('正在请求板块轮动数据URL:', url);
            
            const response = await axios.get(url);
            console.log('板块轮动数据API响应:', response.data);
            
            if (response.data && response.data.code === 200) {
                const boardData = response.data.data || [];
                this.processBoardRotationData(boardData);
                this.showMessage('success', `成功加载板块轮动数据`);
            } else if (Array.isArray(response.data)) {
                // 直接返回数组的情况
                this.processBoardRotationData(response.data);
                this.showMessage('success', `成功加载板块轮动数据`);
            } else {
                console.error('板块轮动数据格式异常:', response.data);
                this.showMessage('error', '板块轮动数据格式异常: ' + JSON.stringify(response.data));
            }
        } catch (error) {
            console.error('加载板块轮动数据失败:', error);
            this.showMessage('error', '板块轮动数据加载失败: ' + (error.response?.data?.message || error.message || '网络错误'));
        }
    },

    // 显示消息的统一方法
    showMessage(type, message) {
        if (window.ElMessage) {
            window.ElMessage[type](message);
        } else {
            console.log(`[${type.toUpperCase()}] ${message}`);
        }
    },

    // 判断板块是否被高亮
    isHighlighted(boardName) {
        return this.selectedBoardName && boardName === this.selectedBoardName;
    },

    // 处理板块点击事件
    handleBoardClick(boardName) {
        if (this.selectedBoardName === boardName) {
            this.selectedBoardName = null; // 取消选择
        } else {
            this.selectedBoardName = boardName; // 选择新的板块
        }
    },

    // 格式化日期显示
    formatDate(dateStr) {
        if (!dateStr) return '';
        if (dateStr.length === 8) {
            return `${dateStr.substring(4, 6)}-${dateStr.substring(6, 8)}`;
        }
        return dateStr;
    },

    // 初始化方法
    init() {
        console.log('板块轮动模块初始化');
        this.loadBoardRotationData();
    }
};